// 引入 dayjs 库，用于日期和时间的格式化与操作
import { dayjs } from 'element-plus';

/**
 * 格式化时间为 YYYY年MM月DD日 格式
 * @param {string} time - 需要格式化的时间字符串，如 "2025-04-03T23:21:14"
 * @returns {string} 格式化后的时间字符串，如 "2025年04月03日"
 */
export const formatToDate = (time) => dayjs(time).format('YYYY年MM月DD日');

/**
 * 格式化 ISO 时间字符串为 YYYY-MM-DD HH:mm:ss 格式
 * @param {string} isoTime - ISO 时间字符串，如 "2025-04-03T23:21:14"
 * @returns {string} 格式化后的时间字符串，如 "2025-04-03 23:21:14"
 */
export const formatISOTime = (isoTime) => {
  return dayjs(isoTime).format('YYYY-MM-DD HH:mm:ss');
};

/**
 * 格式化数字显示
 * @param {number} num - 需要格式化的数字
 * @returns {string} 格式化后的字符串
 */
export const formatNumber = (num) => {
  if (typeof num !== 'number') {
    return '0'; // 或者可以根据需要抛出错误
  }

  if (num < 1000) {
    return num.toString();
  }

  // 处理1万以上的数字
  if (num >= 10000) {
    const wanValue = num / 10000;
    // 保留一位小数，并去除可能的.0结尾
    const formatted = wanValue.toFixed(1).replace(/\.0$/, '');
    return `${formatted}万+`;
  }

  // 处理1000-9999的数字
  const kValue = num / 1000;
  // 保留一位小数，并去除可能的.0结尾
  const formatted = kValue.toFixed(1).replace(/\.0$/, '');
  return `${formatted}k`;
};


// 新增数字格式化函数
/*     const number = Number(num);
    if (isNaN(number)) return '0';
    
    if (number < 1000) {
      return number.toString();
    }
    
    const thousands = number / 1000;
    const formatted = thousands.toFixed(1);
    
    return formatted.endsWith('.0') 
      ? `${formatted.split('.')[0]}k`
      : `${formatted}k`; */



/**
 * 格式化时间为 YYYY-MM-DD HH:mm 格式
 * @param {string} time - ISO时间字符串，如 "2025-04-03T23:21:14"
 * @returns {string} 格式化后的时间字符串，如 "2025-04-03 23:21"
 */
export const formatToDateHour = (time) => {
  const date = dayjs(time);
  const hour = date.hour();

  let period = '';
  if (hour >= 0 && hour < 6) {
    period = '凌晨';
  } else if (hour >= 6 && hour < 12) {
    period = '上午';
  } else if (hour >= 12 && hour < 18) {
    period = '下午';
  } else {
    period = '晚上';
  }

  // 将24小时制转换为12小时制
  const displayHour = hour > 12 ? hour - 12 : hour;

  return `${date.format('YYYY-MM-DD')} ${period}${displayHour}点`;
};


/**
 * 格式化时间为相对时间显示
 * @param {string} time - ISO时间字符串，如 "2025-04-03T23:21:14"
 * @returns {string} 格式化后的相对时间字符串
 */
export const formatRelativeTime = (time) => {
  const now = dayjs();
  const target = dayjs(time);
  const diffMinutes = now.diff(target, 'minute');
  const diffHours = now.diff(target, 'hour');
  const diffDays = now.diff(target, 'day');

  if (diffMinutes < 1) {
    return '刚刚';
  }
  if (diffMinutes < 60) {
    return `${diffMinutes}分钟前`;
  }
  if (diffHours < 12) {
    return `${diffHours}小时前`;
  }
  if (diffHours < 24) {
    return target.isSame(now, 'day')
      ? `今天${target.format('HH:mm')}`
      : `昨天${target.format('HH:mm')}`;
  }
  if (diffDays < 3) {
    return `${diffDays}天前`;
  }
  return target.format('MM月DD日 HH:mm');
};
